Data storage has become an increasingly important component of computer networking technologies. One challenge related to data storage involves the identification and cleanup of data that is no longer being used. Many data storage systems perform this function, also referred to as “garbage collection,” as a background routine to ensure the continual availability of memory space for needed operations. For example, a background garbage collection routine may remove unused data from a device's temporary memory. However, data that is eliminated from memory through garbage collection is typically lost and cannot be recovered by the end user. Therefore, there exists a need for methods and systems for performing a garbage collection function to remove unused data while also offering a capability to recover data that is removed.